package cn.itcast.nems.base.util;

import cn.hutool.core.convert.NumberChineseFormatter;
import cn.itcast.nems.common.util.NumberUtil;
import org.springframework.util.StringUtils;

import java.util.Objects;
import java.util.regex.Pattern;

public class ProductBeanUtil {
    private final static  String  REGEX_BIZ_NO ="^[A-Z]+[\\-]+[0-9]+[\\-]+[A-Z]+[\\-]+[0-9]+[\\-]+[0-9]+$" ;
    private final static  String  REGEX_BIZ_NO_CLAZZ ="^[A-Z]+[\\-]+[0-9]+.*" ;
    private static final Pattern  PATTERN_BIZ_NO = Pattern.compile(REGEX_BIZ_NO);
    private static final Pattern  PATTERN_BIZ_NO_CLAZZ = Pattern.compile(REGEX_BIZ_NO_CLAZZ);

    /**
     * 获取 product biz_no 内容中 阶段
     * @param bizNO 文本内容
     * @return 阶段
     */
    public static Integer getPhaseNumber(String bizNO) {
        if (!StringUtils.hasLength(bizNO)) {
            return null;
        }
        if (StringUtils.hasLength(bizNO) && PATTERN_BIZ_NO.matcher(bizNO).matches()) {
            bizNO = bizNO.substring(bizNO.lastIndexOf("-") + 1);
        }
        return NumberUtil.checkNum(bizNO,null) ? Integer.valueOf(bizNO) : null;
    }

    /**
     * 获取biz_no 中班级ID
     * @param bizNO 业务code
     * @return 班级ID
     */
    public static Integer getClazzId (String bizNO){
        Integer clazzId = null;
        if (!StringUtils.hasLength(bizNO)) {
            return clazzId;
        }
        if (PATTERN_BIZ_NO_CLAZZ.matcher(bizNO).matches()) {
            bizNO =  bizNO.split("-")[1] ;
        }
       return NumberUtil.checkNum(bizNO,null) ? Integer.valueOf(bizNO) : null;

    }

    /**
     * 拼接班级名称 如: "北京黑马JavaEE就业班3期（20230517面授）【阶段一】"
     * @param className 班级名称
     * @param bizNO biz_no
     * @return 带阶段的班级名称
     */
    public static String getClassName(String className, String bizNO) {
        Integer phaseNumber = getPhaseNumber(bizNO);
        if (Objects.nonNull(phaseNumber)) {
            className = className + "【阶段" + NumberChineseFormatter.format(phaseNumber.doubleValue(), false) + "】";
        }
        return className;
    }
}
